# -*- coding: utf-8 -*-
import math 
import string
GLOBAL_BIG_NUMBER = 10**7
def find_factor(x):#находит минимальное число, на которое нужно домножить, чтобы получить целое
    for i in xrange(1, GLOBAL_BIG_NUMBER):
        tmp = x*i
        if tmp==math.floor(tmp):
            return i
    return 0 
def float_as_frac(x):#из float в список-дробь [числитель, знаменатель]
    factor = find_factor(x)
    return [x*factor, factor]
def frac_as_float(frac):
    return frac[0]/frac[1]
def print_mat(mat):#печатает матрицу
    str_num = len(mat)
    for i in xrange(0, str_num):
        el_num = len(mat[i])
        for j in xrange (0, el_num):
            print mat[i][j], "\t",
        print
def str_to_list(str):#переводит строку с данными в список(поддержка минусов, дробей и комплексных чисел)
    res = []
    l = len(str)
    tmp = ''
    num = ''
    cdiv = 0
    for i in xrange(0, l):                        
        if tmp == '':
            if str[i]=='-':
                tmp+='-'
                continue
        if (str[i] == '/' and cdiv == 0 and tmp!='' and tmp!='-'):
            num = tmp
            tmp = ''
            cdiv = 1
            continue
        if ( str[i].isdigit()):
            tmp+=unicode(str[i])
        else:
            if (tmp != '' and tmp != '-'):
                if num == '':
                    res.append(string.atoi(tmp))
                else:
                    res.append(string.atof(num)/string.atof(tmp))
            if (str[i]=='-'):
                tmp = '-'
            else:
                tmp = ''
            cdiv = 0
            num = ''
            if ( '?ijIJ'.find(str[i])!=-1 and len(res)>=2):
                if (isinstance(res[-1], complex) or isinstance(res[-2], complex)):
                    continue
                c = complex(res[-2], res[-1])
                res = res[:-2]
                res.append(c)
    return res
def list_to_matrix(list):
    res = []
    size = len(list)
    if size == 9:
        for i in [0, 3, 6]:
            res.append([list[i], list[i+1], list[i+2]])
    elif size == 4:
        for i in [0, 2]:
            res.append([list[i], list[i+1]])        
    return res
